periodicjs.core.data
Description
Core data is the ORM wrapping component of periodicjs.core.controller that provides database adapters for commonly used databases (ie. mongo, sql, postgres). Adapters provide a standard set of methods and options regardless of the type of database and so the methods for querying, updating, creating etc. that are exposed across your application always expect the same inputs and provide the same outputs.
Standardization of usage makes implementation easier and allows for more confidence in development. Additionally, core data implements a basic interface for instantiating adapters and so all custom adapters are guaranteed to operate under the same basic guidelines.
Usage (basic)
const mongoose = require('mongoose');
mongoose.connect();
const AdapterInterface = require('periodicjs.core.data');
const ExampleSchema = require('./some/path/to/schema');
let ExampleModel = mongoose.model('Example', ExampleSchema);
let Adapter = AdapterIterface.create({ adapter: 'mongo', model: ExampleModel });
let exampleDocument = {
title:'example document',
createdat: new Date(),
};
mongoose.once('open', () => {
Adapter.create({ newdoc: exampleDocument })
let writeStream = require('fs').createWriteStream('./some/path/to/file');
Adapter.stream({...})
.then(dbstream => {
dbstream.pipe(writeStream);
});
});
Usage (with configuration Options)
const mongoose = require('mongoose');
mongoose.connect();
const AdapterInterface = require('periodicjs.core.data');
const ExampleSchema = require('./some/path/to/schema');
let ExampleModel = mongoose.model('Example', ExampleSchema);
let config = { limit: 500, sort: '-createdat'};
let Adapter = AdapterIterface.create(Object.assign({ adapter: 'mongo', model: ExampleModel }, config));
let exampleDocument = {
title:'example document',
createdat: new Date(),
};
mongoose.once('open', () => {
Adapter.load({title:'example'}, function (err, data) {
});
});
Usage (with custom adapter)
const mongoose = require('mongoose');
mongoose.connect();
const AdapterInterface = require('periodicjs.core.data');
const ExampleSchema = require('./some/path/to/schema');
let ExampleModel = mongoose.model('Example', ExampleSchema);
let config = { limit: 500, sort: '-createdat' };
let Adapter = AdapterIterface.create(Object.assign({ adapter: 'mongo', model: ExampleModel }, config));
let exampleDocument = {
title:'example document',
createdat: new Date(),
};
mongoose.once('open', () => {
const CustomAdapter = function () {
this.search = function () {};
this.load = function () {};
this.query = function () {};
this.update = function () {};
this.delete = function () {};
this.stream = function () {};
this.create = function () {};
return this;
};
const Adapter = AdapterInterface.create({ adapter: CustomAdapter, model: ExampleModel });
});
Development
Make sure you have grunt installed
$ npm install -g grunt-cli jsdoc-to-markdown
For generating documentation
$ grunt doc
$ jsdoc2md adapters/**/*.js utility/**/*.js defaults/**/*.js index.js > doc/api.md
Notes
Testing
$ npm test
Contributing
License
MIT